home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
tools
/
cdc
/
deve.lzh
/
CDCSAMP.c
< prev
next >
Wrap
Text File
|
1996-05-21
|
5KB
|
193 lines
/*
さむさむさむぷる CDC
By 田圃(TNB製作所)
*/
#include <tnb.h>
#include <a:\TNB\CDC\CDC_CLIB.h>
void main()
{
int i,j,b,x,y,cl;
char *trkna=0;
int ledsts=0;
int cdrmod=0;
int bc[4][7]={
0x36,0x40,0x3A,0x41,0x43,0x44,0x45,
0x13,0x3F,0x4E,0x4A,0x47,0x48,0x49,
0x3B,0x38,0x39,0x3D,0x4B,0x4C,0x4D,
1000,0x37,0x50,0x51,0x4F,0x52,1001
};
struct CDC_STAT_PTR *PTR;
int intor=0; //員とろモード
int timb=0; //時間記憶
int pltrk=0; //時間記憶
int *protim;
if ( CDC_CHK()==0 ){
B_PRINT("CDC は常駐していません!!\r\n");
return;
}
cls();
locate(0,5);
B_PRINT(
"┌────────────────────┐\r\n"
"│┌──────────────────┐│\r\n"
"││ ││\r\n" //7
"││ ││\r\n"
"│└──────────────────┘│\r\n"
"│ ┌─┐ ┌──────┐┌─-┐ │\r\n"
"│ │ │ │ 00 00:00││ │CDC'│\r\n" //11
"│ └─┘ └──────┘└─-┘ │\r\n"
"└────────────────────┘\r\n"
" ┌──┬──┬──┬──┬──┬──┬──┐\r\n"
" │ ★ │RAND│RPET│AUTO│ 7 │ 8 │ 9 │\r\n" //15
" ├──┼──┼──┼──┼──┼──┼──┤\r\n"
" │ △ │ ■ │ > │ || │ 4 │ 5 │ 6 │\r\n" //17
" ├──┼──┼──┼──┼──┼──┼──┤\r\n"
" │ << │ |< │ >| │ >> │ 1 │ 2 │ 3 │\r\n" //19
" ├──┼──┼──┼──┼──┼──┼──┤\r\n"
" │MCLR│MDEL│MVIW│MSET│ 0 │ - │INTO│\r\n" //21
" └──┴──┴──┴──┴──┴──┴──┘\r\n"
);
CDC_KEYCANSEL( 0x01 ); //ESC CANSEL
CDC_KEYCANSEL( 0x53 ); //登録 CANSEL
CDC_KEYCANSEL( 0x36 ); //HOME CANSEL
mouse(4);
mouse(1);
PTR=CDC_STAT();
locate(4,7);
B_PRINT(PTR->CDNAME); //CD名アドレス
for(;;){
if ( intor ){
PTR=CDC_STAT();
if ( pltrk!=PTR->TRAKNO ){
pltrk=PTR->TRAKNO;
timb=ONtim_countD();
} elif ( PTR->PLAYINF==0x11 ){
if ( ONtim_margin( timb,400 ) ){
timb=ONtim_countD();
//CDC_INKEY(0x39);
//while( CDC_SCSI_CHK()<0 );
CDC_FADEOUT(0);
}
}
}
if ( KEYSNS() )
INKEY();
PTR=CDC_STAT();
if ( trkna!=PTR->TRAKNAME ){ /* 曲名が変わっているかをチェック!! */
trkna=PTR->TRAKNAME;
locate(4,7);
B_PRINT(" ");
locate(4,7);
B_PRINT(PTR->CDNAME); //CD名アドレス
locate(4,8);
B_PRINT(" ");
locate(4,8);
B_PRINT(PTR->LEDSTR);
}
if ( ledsts!=PTR->LEDSTAT ){ /* LEDの状態が変わっているかをチェック!!! */
locate(6,11);
ledsts=PTR->LEDSTAT;
if ( ledsts&1 ) B_PRINT("■");
elif ( ledsts&2 ) B_PRINT(">");
elif ( ledsts&4 ) B_PRINT("||");
elif ( ledsts&8 ) B_PRINT(">>");
elif ( ledsts&16 ) B_PRINT("<<");
else B_PRINT(" ");
}
i=CDC_MODE(-1);
if ( cdrmod!=i ){ /* CDCのMODEが変わっているかをチェック!!! */
locate(6,11);
cdrmod=i;
locate(10,11);
if ( cdrmod&1 ) B_PRINT("⊂");
elif ( cdrmod&2 ) B_PRINT("1P");
else B_PRINT(" ");
locate(30,11);
if ( cdrmod&4 ) B_PRINT("R");
elif ( cdrmod&16 ) B_PRINT("B");
else B_PRINT(" ");
if ( cdrmod&8 ) B_PRINT("M");
else B_PRINT(" ");
}
locate(16,11); /*時間など、LEDのかかれるはずの物を表示!*/
i=PTR->LEDTIME;
printf("%3d %3d:%02d",PTR->LEDTRAK,(i>>16),(i>>8)&0xFF);
b=MS_GETDT();
if ( b&0x1 )
break;
if ( (b&0x100)==0 ){
CDC_INKEY(0); /* <-なにもなくループする時一度 0 を送っておくこと*/
continue;
}
y=(x=MS_CURGT())&0xFFFF;
x>>=16;
x=(x-8*8);
y=(y-(15*16-8));
if ( x<0 || y<0 ){
CDC_INKEY(0); /* <-なにもなくループする時一度 0 を送っておくこと*/
continue;
}
x=x/(6*8);
y=y/32;
if ( x>=7 || y>=4 ){
CDC_INKEY(0); /* <-なにもなくループする時一度 0 を送っておくこと*/
continue;
}
i=bc[y][x];
if ( i==0x40 ){ //RAND
CDC_MODE(2);
} elif ( i==0x3A ){ //REPET
CDC_MODE(1);
} elif ( i==0x41 ){ //AUTO
CDC_MODE(0);
} elif ( i==0x3F ){ //STOP
CDC_STOP();
CDC_INKEY(0x52);//LED初期化
} elif ( i==0x4E ){ //ENTER
if ( PTR->PLAYINF==0x12 ){
CDC_RESUME();
} elif ( PTR->PLAYINF!=0x11 ){
CDC_PLAY(0,0);
}
} elif ( i==0x4A ){ //PAUSE
if ( PTR->PLAYINF==0x11 ){
CDC_PAUSE();
}
} elif ( i==1000 ){ //MemClr
short *e;
e=CDC_PROG(); //CDC_PROG
*e=0; //PROG=0
CDC_PROG(); //CDC_PROG
CDC_INKEY(0x52);//LED初期化
} elif ( i==1001 ){ //MemClr
intor^=1;
locate(32,11); /*時間など、LEDのかかれるはずの物を表示!*/
B_PRINT( (intor==0)?" ":"I");
} else {
CDC_INKEY(i);
}
if ( i!=0x3B && i!=0x3D )
while( MS_GETDT()&0x100 );
/*
[+][-]が押されていたら、マウスが話されるのを待たず
リターン。でないとシーク出来ない。
[+][-]が押されているあいだ、CDC_INKEYに 0 送ってはだめ
*/
}
locate(0,23);
mouse(0);
mouse(2);
CDC_KEYCANSEL(-1);
}